/*
 * Drive_DHT11.c
 *
 *  Created on: Dec 14, 2021
 *      Author: hg26972
 */
#include <stdio.h>
#include "string.h"
#include "Drive_DHT11.h"

extern TIM_HandleTypeDef htim2;
extern UART_HandleTypeDef huart2;

/*
 * 参数:
 * us 微秒
 */
void delay_us(uint16_t us) {
	uint16_t differ = 0;

	__HAL_TIM_SET_COUNTER(&htim2, 0);

	while(differ < us) {
		differ = __HAL_TIM_GET_COUNTER(&htim2);
	}
}

static void DHT11_Mode_IPU(DHT11_Data_TypeDef* DHT11_Data)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.Pin = DHT11_Data->GPIO_Pin;
    GPIO_InitStruct.Mode= GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull= GPIO_PULLUP;
    HAL_GPIO_Init(DHT11_Data->_GPIO_PORT,&GPIO_InitStruct);
}

static void DHT11_Mode_Out_pp(DHT11_Data_TypeDef* DHT11_Data)
{
    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_InitStruct.Pin = DHT11_Data->GPIO_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(DHT11_Data->_GPIO_PORT,&GPIO_InitStruct);
}
